package Reflection;
//测试类什么时候会初始化

public class Test06 {
    static {
        System.out.println("Main类被加载了");
    }

    public static void main(String[] args) throws ClassNotFoundException {
        //主动引用的时候
//        Son son = new Son();
        //反射也会产生主动引用
//        Class aClass = Class.forName("Reflection.Son");
        //不会产生类的引用的方法
//        System.out.println(Son.b);  //子类都不会被加载

//        Son[] array = new Son[6];  //除了main类，其他没有任何类被加载

        System.out.println(Son.M); //常量池中的常量，也不会引起son类的加载
    }
}
class Father{
    static int b = 2;
    static {
        System.out.println("父类被加载了");
    }
}
class Son extends Father{
    static {
        System.out.println("子类被加载了");
        m=300;
    }
    static int m = 100;
    static final int M = 1;
}